#ifndef SHIN_LOG_H
#define SHIN_LOG_H

#pragma once

#define LOG_LEVEL_DEBUG		0
#define LOG_LEVEL_INFO		1
#define LOG_LEVEL_WARNING	2
#define LOG_LEVEL_ERROR		3
#define LOG_LEVEL_FATAL		4
#define LOG_LEVEL_SPECIAL	5

void shin_log(int, const char*, ...);

#define info_log(...) shin_log(LOG_LEVEL_INFO, __VA_ARGS__)
#define debug_log(...) shin_log(LOG_LEVEL_DEBUG, __VA_ARGS__)
#define warning_log(...) shin_log(LOG_LEVEL_WARNING, __VA_ARGS__)
#define error_log(...) shin_log(LOG_LEVEL_ERROR, __VA_ARGS__)
#define fatal_log(...) shin_log(LOG_LEVEL_FATAL, __VA_ARGS__)
#define special_log(...) shin_log(LOG_LEVEL_SPECIAL, __VA_ARGS__)

#endif
